package com.seeyoui.kensite.common.util;

import java.io.Serializable;
import java.util.Date;

/**
 * Created by dico on 16/11/15.
 *
 * 接口返回通用对象
 */
public class Result implements Serializable {
	private static final long serialVersionUID = -5617410301723252553L;

	/**
	 * 请求是否成功 0失败 1成功
	 */
	private int state = 0;

	/**
	 * 具体数据
	 */
	private Object data;

	/**
	 * 错误消息
	 */
	private String msg;

	public int getState() {
		return state;
	}

	public void setState(int state) {
		this.state = state;
	}

	public Object getData() {
		return data;
	}

	public void setData(Object data) {
		this.data = data;
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}
	
	/**
	 * 接口调用成功方法
	 * 传入参数为传递的对象
	 * @param data
	 * @return
	 */
	public static Result success(Object data) {
		Result result = new Result();
		result.setData(data);
		result.setState(1);
		result.setMsg("");
		return result;
	}
	
	/**
	 * 接口调用成功方法
	 * @param data 传递的对象
	 * @param msg 传递的消息
	 * @return Result
	 */
	public static Result success(Object data, String msg) {
		Result result = new Result();
		result.setData(data);
		result.setState(1);
		result.setMsg(msg);
		return result;
	}
	
	/**
	 * 接口调用成功方法
	 * @param data 传递的对象
	 * @param msg 传递的消息  例如： 我是%s，今年%s岁，出生于%s。
	 * @param m 写入消息中的子内容  例如：张三,26,2001-01-01 00:00:01
	 * <br>
	 * 最终输出消息为：我是张三，今年26岁，出生于2001-01-01 00:00:01。
	 * @return Result
	 */
	public static Result success(Object data, String msg, Object... m) {
		Result result = new Result();
		result.setData(data);
		result.setState(1);
		result.setMsg(String.format(msg, m));
		return result;
	}
	
	/**
	 * 接口调用失败方法
	 * 传入参数为错误信息
	 * @param msg
	 * @return
	 */
	public static Result failure(String msg) {
		Result result = new Result();
		result.setMsg(msg);
		result.setState(0);
		return result;
	}
	
	/**
	 * 接口调用失败方法
	 * @param msg 例如： 我是%s，今年%s岁，出生于%s。
	 * @param m   例如：张三,26,2001-01-01 00:00:01
	 * <br>
	 * 最终输出消息为：我是张三，今年26岁，出生于2001-01-01 00:00:01。
	 * @return Result
	 */
	public static Result failure(String msg, Object... m) {
		Result result = new Result();
		result.setMsg(String.format(msg, m));
		result.setState(0);
		return result;
	}
	
	public static void main(String[] args) {
		Result.failure("asdfs%s s%sfsdafas你好s%s, %s", "AA", 2000, "CC", new Date());
	}
}
